package com.rdgk.newtech.service;

import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author: 高亚杰
 * @description: 技术动态分析service层
 */
public interface NewTechAnalyseService {
    /**
     * 最新技术动态分析方法
     * @param words 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @return
     */
    public List<Map<String,Object>> latestTechnologyTrends(Integer topicId, String[] words);
    /**
     *技术发展趋势
     * @param words 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @param  startDate 开始时间
     * @param  endDate 结束时间
     * @return
     */
    public Map<String,Object> technologyDevelopmentTrends(Integer topicId, String[] words, Date startDate, Date endDate);

    /**
     *
     * @param topicId
     * @param words
     * @param startDate
     * @param endDate
     * @param dateType
     * @return
     */
    public Map<String, Object> technologyDevelopmentTrends(Integer topicId, String[] words, Date startDate, Date endDate,String dateType) ;

    /**
     *
     * @param topicId
     * @param words
     * @param startDate
     * @param endDate
     * @param dateType
     * @param category
     * @return
     */
    public Map<String, Object> technologyDevelopmentTrends(Integer topicId, String[] words, Date startDate, Date endDate,String dateType,String category) ;
    /**
     *技术发展历程
     * @param words 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @return
     */
    public List<Map<String,Object>> technologyDevelopmentCours(Integer topicId, String category);
    /**
     *技术热点
     * @param words 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @return
     */
    public Map<String,Object> technologyHotspot(Integer topicId, String[] words);
    /**
     *技术动态信息区域分布
     * @param words 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @return
     */
    public List<Map<String,Object>> technologyRegionalDistribution(Integer topicId, String[] words);
    /**
     *技术动态信息来源分布
     * @param words 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @return
     */
    public List<Map<String,Object>> technologySourceDistribution(Integer topicId, String[] type);


    public List<Map<String,Object>> technologySourceDistribution_news(Integer topicId, String[] words);

    public List<Map<String,Object>> technologySourceDistribution_paper(Integer topicId, String[] words);

    public List<Map<String,Object>> technologySourceDistribution_patent(Integer topicId, String[] words);

    /**
     *热词图谱
     * @param  topicId 技术领域id
     * @param  keyword 热词
     * @return
     */
    Map<String,Object>  hotWordsAtlas(Integer topicId, String keyword);
    public Map<String, Object> hotWordsAtlas(Integer topicId, String keyword,String category);
    public Map<String, Object> hotWordsAtlasNews(Integer topicId, String keyword) ;
    public Map<String, Object> hotWordsAtlasPaper(Integer topicId, String keyword) ;
    public Map<String, Object> hotWordsAtlasPatent(Integer topicId, String keyword) ;
    /**
     *热词发展趋势
     * @param words 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @return
     */
    public Map<String,Object>  hotWordDevelopmentTrend(Integer topicId,Integer topnumber, String[] words,Date startDate, Date endDate);

    public Map<String, Object> hotWordDevelopmentTrend(Integer topicId,Integer topnumber, String[] words,Date startDate, Date endDate,String category) ;
    /**
     * 共词分析
     * @param  topicId 技术领域id
     * @return
     */
    public Map<String,Object>  coWordAnalysis(Integer topicId);
    public Map<String, Object> coWordAnalysis(Integer topicId,String category);
    /**
     * 热词详情
     * @param wordId 某个领域的一个或者多个主题关键词
     * @param  topicId 技术领域id
     * @return
     */
    public Map<String,Object>  hotWordDetail(Integer topicId,Integer wordId);
    /**
     * 论文详情
     * @param paperId 某个领域的一个或者多个主题关键词
     * @return
     */
    public Map<String,Object>  paperDetail(Integer paperId);
    /**
     * 专利详情
     * @param patentId 某个领域的一个或者多个主题关键词
     * @return
     */
    public Map<String,Object>  patentDetail(Integer patentId);
    /**
     * 专家详情
     * @param authorId 某个领域的一个或者多个主题关键词
     * @return
     */
    public Map<String,Object>  authorDetail(Integer authorId);
    /**
     * 机构详情
     * @param orgId 某个领域的一个或者多个主题关键词
     * @return
     */
    public Map<String,Object>  orgDetail(Integer orgId);
    /**
     * 获得某领域相关热词
     * @param topicId 某个领域id
     * @param type 新闻动态 0、论文 1、专利 2 综合 all
     */
    public List<Map<String,Object>> getHotwordByType(Integer topicId,String type);
}
